//展示国旗的应用程序。通过绘制风格各异的国旗，显示了dreamjs在绘图方面的潜力。
Class Flag extends Box
function Flag(){
	G.main.addChild(this);
	this.set({pos:[0,0,"f","f"],relative:1,scroll:true});

	this.drawChina();
	this.drawAmerica();
	this.drawKorea();
	this.drawIsrael();
	this.drawCanada();
	this.drawTurkey();
	this.drawIndia();
	this.drawHongkong();
	this.drawKmt();
}
//创建旗帜主体部分。在绘制各国国旗时调用。
function createFlagBase(title,bgColor,desc){
	this.addChild([
		[[title,"#000",30],{align:"c",padding:20}],
		[[desc,"#666",20],{multi:true,padding:[,20,20,20],indent:true}],
		[{h:360,bg:"#eee"},
			[{pos:["c","c",400,270],bg:bgColor}]
		]
	]);
	return this.children[this.children.length-1].children[0];
}
//绘制中国国旗。五角星属于内置样式，可直接使用。依次设置好五星的位置大小旋转度，效果就出来了。
function drawChina(){
	var box=this.createFlagBase(
		"中国国旗",
		"#f00",
		"中华人民共和国国旗为五星红旗。长宽之比为3：2，红色旗面，左上方缀有五颗黄色五角星。一星较大，居左，四星较小，环拱于大星之右。四颗小星各有一个尖正对大星的中心点。红色象征革命，黄色寓示着红地上显出光明。五颗星及其相互关系象征中国共产党领导下的革命人民大团结。"
	);
	box.addChild([
		[{pos:[54,72,75,75],pivot:"c",bg:["#ff0",,"star"]}],
		[{pos:[122,30,25,25],pivot:"c",rotation:-30,bg:["#ff0",,"star"]}],
		[{pos:[152,58,25,25],pivot:"c",rotation:-15,bg:["#ff0",,"star"]}],
		[{pos:[152,101,25,25],pivot:"c",bg:["#ff0",,"star"]}],
		[{pos:[124,130,25,25],pivot:"c",rotation:15,bg:["#ff0",,"star"]}],
	]);
}
//绘制美国国旗。不管是13道条纹还是50颗星，都需要使用for循环来实现。适当地运用判断语句，让小星错落有致。
function drawAmerica(){
	var box=this.createFlagBase(
		"美国国旗",
		"#fff",
		"美利坚合众国的国旗旗面由13道红白相间的宽条构成，左上角还有一个包含了50颗白色小五角星的蓝色长方形。50颗小星代表了美国的50个州，而13条间纹则象征着美国最早建国时的13块殖民地。红色象征勇气，白色象征真理，蓝色则象征正义。这面旗帜俗称“星条旗”，正式名称“合众国旗”。它在正式成为美国国旗后曾经过28次修改。"
	);
	for(var i=0;i<7;i++){
		box.addChild([[{y:i*42,w:"f",h:21,bg:"#f00"}]]);
	}
	box.addChild([[{w:192,h:147,bg:"#007"}]]);
	for(var i=0;i<6;i++){
		for(var j=0;j<9;j++){
			var x=i*33+5+(j%2==0?0:18);
			var y=j*15+3;
			if(j%2==1&&i>=5) continue;
			box.addChild([[{pos:[x,y,17,17],bg:["#fff",,"star"]}]]);
		}
	}
}
//绘制韩国国旗。连线类型为3可画出半圆，形成八卦。由于四角的线段太多，所以定义了一个数组来描述各线段的位置和类型，依次取出用于绘线。
function drawKorea(){
	var box=this.createFlagBase(
		"韩国国旗",
		"#fff",
		"韩国国旗又称太极旗，是以儒家及道教的思想为基础而绘制的。中央的太极象征宇宙，蓝色为阴，红色为阳，万物是由阴阳所构成的；太极则是由阴阳组成，以表示宇宙调和与统一之意。4个角落的卦在左上方的是乾，右下为坤，右上为坎，左下为离，则代表天地水火、父母男女之意，也正象征民族的融合与国家的发展。国旗底色为白色，象征韩国人民的纯洁和对和平的热爱。"
	);
	box.addChild([
		[{pos:[125,60,150,150],bg:["#03e",,75]}],
		[{pos:[125,60,150,150],bg:["#f00",,"shape",[0,75],3,[150,75]]}],
		[{pos:[126,97,74,74],bg:["#f00",,37]}],
		[{pos:[200,97,74,74],bg:["#03e",,37]}],
	]);
	var arr=[
		[78,13,1],[94,25,1],[112,37,1],
		[270,42,4],[293,79,4],[287,30,3],[304,19,4],[327,56,4],
		[288,206,2],[312,168,2],[304,218,2],[329,179,2],[322,229,2],[347,191,2],
		[38,198,3],[55,186,4],[78,224,4],[72,175,3]
	];
	for(var i=0;i<arr.length;i++){
		var a=arr[i];
		var r=a[2]<=2?32:-32;
		var h=a[2]%2==1?80:36;
		box.addChild([[{pos:[a[0],a[1],10,h],rotation:r,bg:"#000"}]])
	}
}
//绘制以色列国旗。让两个三角形边框倒立叠加，是大卫之星的最简单画法。
function drawIsrael(){
	var box=this.createFlagBase(
		"以色列国旗",
		"#fff",
		"以色列国旗呈长方形，长宽之比为11：8。白色旗面，上下各有一条蓝色宽带。白底两蓝带及蓝色“大卫之星”的旗帜。蓝白两色是犹太教僧侣披肩（塔利特）的颜色，蓝色代表以色列的天空，白色代表洁净之心。“大卫之星”是西元前十世纪以色列王国大卫王在其盾牌上的标志，代表犹太教与以色列传统文化。"
	);
	box.addChild([
		[{pos:[0,20,"f",40],bg:"#04c"}],
		[{pos:[0,"b-20","f",40],bg:"#04c"}],
		[{pos:[0,0,"f","f"],bg:[,"9#04c","shape",
			[200,82],[242,160],[156,160],[200,82],0,
			[156,108],[242,108],[200,184],[156,108]
		]}],
	]);
}
//绘制加拿大国旗。没有特别的技巧，依次连接各端点，形成枫叶多边形。
function drawCanada(){
	var box=this.createFlagBase(
		"加拿大国旗",
		"#fff",
		"加拿大国旗上的枫叶代表了加拿大人对枫叶的钟爱。白色是代表国土，而加拿大有许多地方都是在北极圈内，白色代表“雪”。中间的白色代表的是加拿大广阔无垠的国土，两侧的红色代表的是东西两岸相邻的大西洋及太平洋。中间的红色枫叶则是象征生活在加拿大富饶国土上辛勤努力的人民。"
	);
	box.addChild([
		[{pos:[0,0,100,"f"],bg:"#f00"}],
		[{pos:["r",0,100,"f"],bg:"#f00"}],
		[{pos:[0,0,"f","f"],bg:["#f00",,"shape",
			[196,223],[198,181],[158,185],[163,172],
			[124,138],[134,132],[127,106],[151,110],
			[154,98],[173,120],[178,118],[170,74],[181,81],
			[185,80],[200,54],[215,80],[219,80],[229,75],
			[221,117],[226,120],[245,99],[248,110],[272,106],
			[265,133],[275,138],[236,171],[240,184],
			[201,181],[202,222],[196,223]
		]}]
	]);
}
//绘制土耳其国旗。使用连接类型4画出新月，再配上五角星。
function drawTurkey(){
	var box=this.createFlagBase(
		"土耳其国旗",
		"#f00",
		"土耳其国旗呈长方形，长与宽之比为3∶2。旗面为红色，靠旗杆一侧有一弯白色新月和一颗白色五角星。红色象征鲜血和胜利；白色新月与五角星为土耳其的传统标志，也是象征伊斯兰教。弦月包星代表吉祥与幸福，象征全国人民团结及独立的意思。"
	);
	box.addChild([
		[{pos:[218,133,66,66],pivot:"c",rotation:-15,bg:["#fff",,"star"]}],
		[{pos:[0,0,"f","f"],bg:["#fff",,"shape",
			[184,92],4,[67,132],[184,175],4,[98,132],[184,92]
		]}]
	]);
}
//绘制印度国旗。画出一根轴条，然后旋转复制24份。
function drawIndia(){
	var box=this.createFlagBase(
		"印度国旗",
		"#fff",
		"橙色象征了勇气，献身与无私，也是印度教士法衣的颜色，白色代表了真理与和平，而绿色则代表繁荣，信心与人类的生产力。轮是印度孔雀王朝鼎盛的阿育王时代佛教圣地石柱柱头的狮首图案之一，神圣的轮象征着真理与道德，也代表了印度古老的文明。轮的24根轴条则可代表一天的24小时，象征国家时时都向前进。"
	);
	box.addChild([
		[{pos:[0,0,"f",85],bg:"#f94"}],
		[{pos:[0,"b","f",85],bg:"#6c4"}],
		[{pos:[159,94,80,80],bg:[,"5#66b",40]}],
		[{pos:[186,121,28,28],bg:[,"4#66b",14]}],
		[{pos:[194,129,12,12],bg:["#66b",,6]}],
	]);
	for(var i=0;i<18;i++){
		box.addChild([
			[{pos:[199,134,11,38],rotation:i*20,pivot:[2,36],bg:["#66b",,"shape",
				[0,0],[11,0],[11,2],4,[7,4],[4,1],[4,26],[0,26],[0,0]
			]}]
		]);
	}
}
//绘制香港区旗。用圆弧围成一片紫荆红瓣，缀之以小星，然后再循环旋转生成5次。
function drawHongkong(){
	var box=this.createFlagBase(
		"香港區旗",
		"#f00",
		"旗幟的底色是紅色，與中華人民共和國國旗的底色一樣，象徵香港為中華人民共和國的一部份。香港市政局標志洋紫荊圖案、花蕊以五顆星表示，再次與中華人民共和國國旗上的五星相對應，寓意中國大陸與香港密不可分的關系。區旗只用紅白兩色，象徵香港實踐一國兩制。"
	);
	for(var i=0;i<5;i++){
		box.addChild([
			[{pos:[200,133,52,90],rotation:i*72,pivot:[30,89]},
				[{pos:[0,0,"f","f"],bg:["#fff",,"shape",
					[52,1],4,[0,41],[25,88],[29,88],4,[24,72],[31,61],
					[42,50],4,[49,40],[45,24],4,[42,15],[52,1]
				]}],
				[{pos:[0,0,"f","f"],bg:[,"2#f00","shape",[28,88],4,[15,65],[21,43]]}],
				[{pos:[26,36,18,18],pivot:"c",rotation:-30,bg:["#f00",,"star"]}],
			]
		]);
	}
}
//中华民国国旗。十二道光芒由12个小三角表示，均匀环绕白日一周。
function drawKmt(){
	var box=this.createFlagBase(
		"中華民國國旗",
		"#f00",
		"中華民國國旗由青、白、紅三色組成，單就色彩而言，分別象征自由、平等、博愛之精神，以及民族、民權、民生之三民主義。若配合色彩的形狀，青天則同時又象征中華民族光明磊落、崇高偉大的人格和志氣；白日象征光明坦白、大公無私的純正心地與思想，十二道光芒形同十二個時辰，勉勵人民奮鬥精進、自強不息，芒鋒示意革命精銳，意味著民主自由光華四射；而滿地的紅色則象征革命先烈的熱血及犧牲奉獻、勇敢奮鬥的精神。"
	);
	box.addChild([
		[{pos:[0,0,200,135],bg:"#00a"}],
		[{pos:[74,40,52,52],bg:["#fff",,26]}]
	]);
	for(var i=0;i<12;i++){
		box.addChild([
			[{pos:[100,66,10,21],rotation:i*30,pivot:[6,50],bg:["#fff",,"shape",
				[5,0],[10,21],[0,21],[5,0]
			]}]
		]);
	}
}